Load libraries

library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(car)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)

Read datasets

AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')

AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')

AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')

Create data frames for each model.

# Define aggregate variables. 
All_Gross_M1_log <- log(AllSubs_NeuralActivation$Gross_US_M1)
All_Theaters_M1 <- AllSubs_NeuralActivation$Theaters_US_M1

Comedy_Gross_M1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_M1)
Comedy_Theaters_M1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_M1

Horror_Gross_M1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_M1)
Horror_Theaters_M1 <- AllSubs_NeuralActivation_Horror$Theaters_US_M1
  
M1_df <- data.frame(All_Gross_M1_log, All_Theaters_M1) 
M1_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_Theaters_M1) 
M1_H_df <- data.frame(Horror_Gross_M1_log, Horror_Theaters_M1) 

# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled

Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled

Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled

M2_df <- data.frame(All_Gross_M1_log, All_PA, All_NA) 
M2_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA) 
M2_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA) 
# Define ISC variables. 
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC

Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC

Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC

# Define models. 
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 

M5_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M5_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M5_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 
# Define whole variables. 
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole

Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole

Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole

# Define models. 
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole) 
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole) 

M7_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M7_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
                      Comedy_AIns_whole, Comedy_MPFC_whole) 
M7_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
                      Horror_AIns_whole, Horror_MPFC_whole) 
# Define onset variables. 
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset

Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset

Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset

# Define models. 
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset) 
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset) 

M9_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M9_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_onset, Comedy_MPFC_onset) 
M9_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_onset, Horror_MPFC_onset) 
# Define middle variables. 
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle

Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle

Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle

# Define models. 
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle) 
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle) 

M11_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M11_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
                      Comedy_AIns_middle, Comedy_MPFC_middle) 
M11_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
                      Horror_AIns_middle, Horror_MPFC_middle) 
# Define offset variables. 
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset

Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset

Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset

# Define models. 
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset) 
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset) 

M13_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M13_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
                      Comedy_AIns_offset, Comedy_MPFC_offset) 
M13_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
                      Horror_AIns_offset, Horror_MPFC_offset) 

M14_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
M14_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_middle, Comedy_MPFC_offset) 
M14_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_middle, Horror_MPFC_offset) 

Notes:

Neuroforecasting: First Month US.

M1: Aggregste data


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(Theaters_US_M1) + 
    Type:scale(Theaters_US_M1), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77903 -0.23205 -0.05965  0.21883  0.83396 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      17.21275    0.12503 137.673  < 2e-16 ***
Typecomedy                       -0.03297    0.16727  -0.197    0.845    
scale(Theaters_US_M1)             0.96069    0.17747   5.413 1.13e-05 ***
Typecomedy:scale(Theaters_US_M1) -0.24037    0.20114  -1.195    0.243    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4365 on 26 degrees of freedom
Multiple R-squared:  0.7846,    Adjusted R-squared:  0.7597 
F-statistic: 31.56 on 3 and 26 DF,  p-value: 8.065e-09

           R2m       R2c
[1,] 0.7655209 0.7655209
[1] 41.10136

M2: Affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.33061 -0.68235  0.03616  0.55621  1.50581 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.7431     0.6865  25.847   <2e-16 ***
Typecomedy                            -1.6486     1.1230  -1.468    0.155    
scale(Pos_arousal_scaled)             -0.3041     0.5202  -0.585    0.564    
scale(Neg_arousal_scaled)             -0.5096     0.4649  -1.096    0.284    
Typecomedy:scale(Pos_arousal_scaled)   0.7048     0.5681   1.241    0.227    
Typecomedy:scale(Neg_arousal_scaled)  -0.3017     1.1007  -0.274    0.786    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8524 on 24 degrees of freedom
Multiple R-squared:  0.2415,    Adjusted R-squared:  0.08352 
F-statistic: 1.529 on 5 and 24 DF,  p-value: 0.2184

           R2m       R2c
[1,] 0.2085769 0.2085769
[1] 82.85859

M3: Aggregate and affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.33061 -0.68235  0.03616  0.55621  1.50581 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.7431     0.6865  25.847   <2e-16 ***
Typecomedy                            -1.6486     1.1230  -1.468    0.155    
scale(Pos_arousal_scaled)             -0.3041     0.5202  -0.585    0.564    
scale(Neg_arousal_scaled)             -0.5096     0.4649  -1.096    0.284    
Typecomedy:scale(Pos_arousal_scaled)   0.7048     0.5681   1.241    0.227    
Typecomedy:scale(Neg_arousal_scaled)  -0.3017     1.1007  -0.274    0.786    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8524 on 24 degrees of freedom
Multiple R-squared:  0.2415,    Adjusted R-squared:  0.08352 
F-statistic: 1.529 on 5 and 24 DF,  p-value: 0.2184

           R2m       R2c
[1,] 0.2085769 0.2085769
[1] 82.85859

M4: ISC data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_ISC) + scale(AIns_ISC) + 
    scale(MPFC_ISC) + Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + 
    Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6449 -0.6801 -0.1485  0.5868  1.4765 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                17.43054    0.25030  69.639   <2e-16 ***
Typecomedy                 -0.46878    0.34267  -1.368    0.185    
scale(NAcc_ISC)             0.14030    0.24521   0.572    0.573    
scale(AIns_ISC)            -0.01868    0.26216  -0.071    0.944    
scale(MPFC_ISC)            -0.05224    0.32252  -0.162    0.873    
Typecomedy:scale(NAcc_ISC) -0.40918    0.35499  -1.153    0.261    
Typecomedy:scale(AIns_ISC)  0.05005    0.35826   0.140    0.890    
Typecomedy:scale(MPFC_ISC)  0.31327    0.38358   0.817    0.423    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9206 on 22 degrees of freedom
Multiple R-squared:  0.1889,    Adjusted R-squared:  -0.06915 
F-statistic: 0.7321 on 7 and 22 DF,  p-value: 0.6472

           R2m       R2c
[1,] 0.1501694 0.1501694
[1] 88.87055

M5: ISC data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.72828 -0.24181 -0.01225  0.13953  0.77659 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.80988    0.45741  36.750  < 2e-16 ***
Typecomedy                           -0.01687    0.74729  -0.023 0.982271    
scale(Theaters_US_M1)                 1.01015    0.22697   4.451 0.000403 ***
scale(Pos_arousal_scaled)            -0.48858    0.31307  -1.561 0.138170    
scale(Neg_arousal_scaled)             0.05774    0.31379   0.184 0.856325    
scale(NAcc_ISC)                      -0.05501    0.14031  -0.392 0.700206    
scale(AIns_ISC)                      -0.15752    0.14431  -1.091 0.291218    
scale(MPFC_ISC)                       0.04026    0.18069   0.223 0.826510    
Typecomedy:scale(Theaters_US_M1)     -0.25989    0.27060  -0.960 0.351144    
Typecomedy:scale(Pos_arousal_scaled)  0.56469    0.34396   1.642 0.120154    
Typecomedy:scale(Neg_arousal_scaled) -0.49637    0.71663  -0.693 0.498462    
Typecomedy:scale(NAcc_ISC)            0.13862    0.20819   0.666 0.514999    
Typecomedy:scale(AIns_ISC)            0.06913    0.19968   0.346 0.733698    
Typecomedy:scale(MPFC_ISC)           -0.11206    0.22123  -0.507 0.619403    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4812 on 16 degrees of freedom
Multiple R-squared:  0.8388,    Adjusted R-squared:  0.7079 
F-statistic: 6.405 on 13 and 16 DF,  p-value: 0.0003889

          R2m      R2c
[1,] 0.741687 0.741687
[1] 52.39564

M6: Neural whole data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_whole) + scale(AIns_whole) + 
    scale(MPFC_whole) + Type:scale(NAcc_whole) + Type:scale(AIns_whole) + 
    Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.35757 -0.50465 -0.08527  0.51664  1.98973 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.32455    0.31829  54.431   <2e-16 ***
Typecomedy                    0.05934    0.45424   0.131    0.897    
scale(NAcc_whole)            -0.53847    0.32957  -1.634    0.117    
scale(AIns_whole)             0.44028    0.37757   1.166    0.256    
scale(MPFC_whole)             0.11712    0.31802   0.368    0.716    
Typecomedy:scale(NAcc_whole)  0.39747    0.43101   0.922    0.366    
Typecomedy:scale(AIns_whole)  0.21229    0.56055   0.379    0.709    
Typecomedy:scale(MPFC_whole) -0.09317    0.39390  -0.237    0.815    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8842 on 22 degrees of freedom
Multiple R-squared:  0.2519,    Adjusted R-squared:  0.0138 
F-statistic: 1.058 on 7 and 22 DF,  p-value: 0.4217

           R2m       R2c
[1,] 0.2034257 0.2034257
[1] 86.44776

M7: Neural whole data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.75210 -0.17062 -0.04619  0.17582  0.86458 

Coefficients:
                                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.820726   0.493062  34.115 2.26e-16 ***
Typecomedy                            0.042263   0.757801   0.056  0.95622    
scale(Theaters_US_M1)                 0.927804   0.246430   3.765  0.00169 ** 
scale(Pos_arousal_scaled)            -0.300491   0.465969  -0.645  0.52815    
scale(Neg_arousal_scaled)             0.152888   0.343094   0.446  0.66185    
scale(NAcc_whole)                    -0.179193   0.204203  -0.878  0.39319    
scale(AIns_whole)                     0.149404   0.239286   0.624  0.54118    
scale(MPFC_whole)                    -0.009189   0.266106  -0.035  0.97288    
Typecomedy:scale(Theaters_US_M1)     -0.266261   0.277711  -0.959  0.35194    
Typecomedy:scale(Pos_arousal_scaled)  0.409818   0.489846   0.837  0.41512    
Typecomedy:scale(Neg_arousal_scaled) -0.600991   0.757529  -0.793  0.43918    
Typecomedy:scale(NAcc_whole)          0.240124   0.273630   0.878  0.39318    
Typecomedy:scale(AIns_whole)          0.049768   0.360733   0.138  0.89199    
Typecomedy:scale(MPFC_whole)          0.011639   0.299914   0.039  0.96952    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4732 on 16 degrees of freedom
Multiple R-squared:  0.8442,    Adjusted R-squared:  0.7175 
F-statistic: 6.667 on 13 and 16 DF,  p-value: 0.0003061

           R2m       R2c
[1,] 0.7492828 0.7492828
[1] 51.38494

M8: Neural onset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_onset) + scale(AIns_onset) + 
    scale(MPFC_onset) + Type:scale(NAcc_onset) + Type:scale(AIns_onset) + 
    Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.54818 -0.64671  0.07108  0.59724  1.36025 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.505333   0.296081  59.124   <2e-16 ***
Typecomedy                   -0.524802   0.386474  -1.358    0.188    
scale(NAcc_onset)            -0.189713   0.341844  -0.555    0.585    
scale(AIns_onset)             0.009848   0.382899   0.026    0.980    
scale(MPFC_onset)             0.155665   0.310544   0.501    0.621    
Typecomedy:scale(NAcc_onset)  0.605660   0.421334   1.437    0.165    
Typecomedy:scale(AIns_onset) -0.200098   0.500120  -0.400    0.693    
Typecomedy:scale(MPFC_onset)  0.192033   0.449838   0.427    0.674    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.875 on 22 degrees of freedom
Multiple R-squared:  0.2674,    Adjusted R-squared:  0.03427 
F-statistic: 1.147 on 7 and 22 DF,  p-value: 0.3712

          R2m      R2c
[1,] 0.216831 0.216831
[1] 85.81866

M9: Neural onset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.39595 -0.27695  0.00788  0.22706  0.65812 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.6933     0.4902  36.092  < 2e-16 ***
Typecomedy                            -0.5994     0.7054  -0.850   0.4080    
scale(Theaters_US_M1)                  1.0783     0.1883   5.728 3.11e-05 ***
scale(Pos_arousal_scaled)             -0.2504     0.2905  -0.862   0.4015    
scale(Neg_arousal_scaled)             -0.3947     0.3158  -1.250   0.2293    
scale(NAcc_onset)                     -0.4064     0.1609  -2.526   0.0225 *  
scale(AIns_onset)                     -0.6175     0.2323  -2.658   0.0172 *  
scale(MPFC_onset)                      0.1763     0.1531   1.151   0.2666    
Typecomedy:scale(Theaters_US_M1)      -0.3773     0.2166  -1.742   0.1007    
Typecomedy:scale(Pos_arousal_scaled)   0.2705     0.3201   0.845   0.4106    
Typecomedy:scale(Neg_arousal_scaled)   0.2729     0.6183   0.441   0.6648    
Typecomedy:scale(NAcc_onset)           0.5517     0.2186   2.523   0.0226 *  
Typecomedy:scale(AIns_onset)           0.6186     0.2769   2.233   0.0401 *  
Typecomedy:scale(MPFC_onset)          -0.2801     0.2228  -1.257   0.2268    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3911 on 16 degrees of freedom
Multiple R-squared:  0.8935,    Adjusted R-squared:  0.807 
F-statistic: 10.33 on 13 and 16 DF,  p-value: 1.904e-05

          R2m      R2c
[1,] 0.822395 0.822395
[1] 39.95427

M10: Neural middle data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.3915 -0.4466  0.1007  0.3873  1.1738 

Coefficients:
                               Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.557276   0.264600  66.354   <2e-16 ***
Typecomedy                    -0.181788   0.372557  -0.488   0.6304    
scale(NAcc_middle)            -0.373031   0.346221  -1.077   0.2930    
scale(AIns_middle)             0.007648   0.257133   0.030   0.9765    
scale(MPFC_middle)            -0.383172   0.239549  -1.600   0.1240    
Typecomedy:scale(NAcc_middle) -0.040661   0.412866  -0.098   0.9224    
Typecomedy:scale(AIns_middle)  0.815077   0.415339   1.962   0.0625 .  
Typecomedy:scale(MPFC_middle)  0.571557   0.347535   1.645   0.1143    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7837 on 22 degrees of freedom
Multiple R-squared:  0.4123,    Adjusted R-squared:  0.2253 
F-statistic: 2.205 on 7 and 22 DF,  p-value: 0.074

           R2m       R2c
[1,] 0.3473471 0.3473471
[1] 79.20621

M11: Neural middle data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.64812 -0.23692  0.00575  0.14246  0.95153 

Coefficients:
                                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.690510   0.486655  34.296  < 2e-16 ***
Typecomedy                           -0.007343   0.709246  -0.010  0.99187    
scale(Theaters_US_M1)                 1.248793   0.343965   3.631  0.00225 ** 
scale(Pos_arousal_scaled)            -0.430717   0.316851  -1.359  0.19288    
scale(Neg_arousal_scaled)             0.007413   0.317422   0.023  0.98166    
scale(NAcc_middle)                    0.312436   0.306492   1.019  0.32318    
scale(AIns_middle)                    0.098045   0.159056   0.616  0.54629    
scale(MPFC_middle)                    0.105902   0.191564   0.553  0.58802    
Typecomedy:scale(Theaters_US_M1)     -0.629131   0.367410  -1.712  0.10614    
Typecomedy:scale(Pos_arousal_scaled)  0.445077   0.359614   1.238  0.23370    
Typecomedy:scale(Neg_arousal_scaled) -0.750351   0.741702  -1.012  0.32675    
Typecomedy:scale(NAcc_middle)        -0.377060   0.343398  -1.098  0.28844    
Typecomedy:scale(AIns_middle)         0.226057   0.350700   0.645  0.52833    
Typecomedy:scale(MPFC_middle)        -0.109742   0.256655  -0.428  0.67465    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4691 on 16 degrees of freedom
Multiple R-squared:  0.8469,    Adjusted R-squared:  0.7225 
F-statistic: 6.807 on 13 and 16 DF,  p-value: 0.0002701

           R2m       R2c
[1,] 0.7531617 0.7531617
[1] 50.85846

M12: Neural offset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) + 
    Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.5994 -0.5186 -0.0776  0.3276  1.7949 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.39804    0.25755  67.552   <2e-16 ***
Typecomedy                    -0.40239    0.36911  -1.090    0.287    
scale(NAcc_offset)            -0.28867    0.28169  -1.025    0.317    
scale(AIns_offset)             0.16721    0.24494   0.683    0.502    
scale(MPFC_offset)             0.20047    0.33370   0.601    0.554    
Typecomedy:scale(NAcc_offset)  0.01794    0.44416   0.040    0.968    
Typecomedy:scale(AIns_offset) -0.17271    0.49837  -0.347    0.732    
Typecomedy:scale(MPFC_offset) -0.37187    0.42214  -0.881    0.388    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9026 on 22 degrees of freedom
Multiple R-squared:  0.2204,    Adjusted R-squared:  -0.02772 
F-statistic: 0.8883 on 7 and 22 DF,  p-value: 0.532

           R2m       R2c
[1,] 0.1765553 0.1765553
[1] 87.68491

M13: Neural offset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.72052 -0.21534 -0.05562  0.16478  0.96215 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.84671    0.54606  30.851  1.1e-15 ***
Typecomedy                           -0.14113    0.75493  -0.187  0.85405    
scale(Theaters_US_M1)                 1.11029    0.37047   2.997  0.00853 ** 
scale(Pos_arousal_scaled)            -0.22652    0.40800  -0.555  0.58645    
scale(Neg_arousal_scaled)             0.15853    0.54061   0.293  0.77311    
scale(NAcc_offset)                   -0.02963    0.16116  -0.184  0.85644    
scale(AIns_offset)                    0.08824    0.17258   0.511  0.61611    
scale(MPFC_offset)                   -0.20723    0.35957  -0.576  0.57240    
Typecomedy:scale(Theaters_US_M1)     -0.39008    0.39094  -0.998  0.33323    
Typecomedy:scale(Pos_arousal_scaled)  0.36240    0.43503   0.833  0.41708    
Typecomedy:scale(Neg_arousal_scaled) -0.70653    0.80755  -0.875  0.39457    
Typecomedy:scale(NAcc_offset)         0.01809    0.25068   0.072  0.94336    
Typecomedy:scale(AIns_offset)         0.12076    0.29862   0.404  0.69128    
Typecomedy:scale(MPFC_offset)         0.22578    0.38817   0.582  0.56891    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4803 on 16 degrees of freedom
Multiple R-squared:  0.8394,    Adjusted R-squared:  0.709 
F-statistic: 6.434 on 13 and 16 DF,  p-value: 0.0003785

           R2m       R2c
[1,] 0.7425612 0.7425612
[1] 52.28065

M14: Sequence Model


Call:
lm(formula = rank(Gross_Total_US_bytheater) ~ Type + scale(Nacc_peak) + 
    Type:scale(Nacc_peak), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy")), 
        Gross_Total_US_bytheater = Gross_Total_US/Total_Theaters_US, 
        Gross_US_M1_bytheater = Gross_US_M1/Theaters_US_W4_num) %>% 
    group_by(Trailer) %>% mutate(Nacc_peak = max(c_across(c(NAcc_onset, 
    NAcc_middle, NAcc_offset)), na.rm = TRUE)))

Residuals:
     Min       1Q   Median       3Q      Max 
-14.8851  -6.5955   0.1789   6.7344  14.8768 

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.017      2.438   6.981 2.06e-07 ***
Typecomedy                    -3.007      3.336  -0.902    0.376    
scale(Nacc_peak)              -0.600      2.557  -0.235    0.816    
Typecomedy:scale(Nacc_peak)    2.060      3.411   0.604    0.551    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 9.08 on 26 degrees of freedom
Multiple R-squared:  0.0462,    Adjusted R-squared:  -0.06386 
F-statistic: 0.4198 on 3 and 26 DF,  p-value: 0.7403

M15: Sequence Model 2


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_middle) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled) + Type:scale(NAcc_onset) + 
    Type:scale(AIns_onset) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.60763 -0.22255 -0.00175  0.21260  0.59443 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          18.18801    0.49790  36.530  < 2e-16 ***
Typecomedy                           -0.69745    0.75999  -0.918   0.3716    
scale(Theaters_US_M1)                 0.67691    0.09529   7.104 1.77e-06 ***
scale(Pos_arousal_scaled)             0.08062    0.28983   0.278   0.7842    
scale(Neg_arousal_scaled)            -0.62840    0.30845  -2.037   0.0575 .  
scale(NAcc_onset)                    -0.37491    0.15472  -2.423   0.0268 *  
scale(AIns_onset)                    -0.52899    0.22047  -2.399   0.0282 *  
scale(MPFC_middle)                   -0.24136    0.12773  -1.890   0.0760 .  
Typecomedy:scale(Pos_arousal_scaled) -0.09169    0.31712  -0.289   0.7760    
Typecomedy:scale(Neg_arousal_scaled)  0.97290    0.71542   1.360   0.1916    
Typecomedy:scale(NAcc_onset)          0.68195    0.24402   2.795   0.0124 *  
Typecomedy:scale(AIns_onset)          0.45269    0.24897   1.818   0.0867 .  
Typecomedy:scale(MPFC_middle)         0.44599    0.20170   2.211   0.0410 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3907 on 17 degrees of freedom
Multiple R-squared:  0.8871,    Adjusted R-squared:  0.8075 
F-statistic: 11.13 on 12 and 17 DF,  p-value: 8.397e-06

           R2m       R2c
[1,] 0.8216611 0.8216611
[1] 39.70758
there are higher-order terms (interactions) in this model
consider setting type = 'predictor'; see ?vif
                          Type          scale(Theaters_US_M1)      scale(Pos_arousal_scaled) 
                     28.252711                       1.724939                      15.959411 
     scale(Neg_arousal_scaled)              scale(NAcc_onset)              scale(AIns_onset) 
                     18.075599                       4.548107                       9.234779 
            scale(MPFC_middle) Type:scale(Pos_arousal_scaled) Type:scale(Neg_arousal_scaled) 
                      3.099778                      10.931294                      20.417830 
        Type:scale(NAcc_onset)         Type:scale(AIns_onset)        Type:scale(MPFC_middle) 
                      7.323326                       8.268350                       4.263094 
Type <- AllSubs_NeuralActivation$Type
M14_df <- data.frame(Type, All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
ggpairs(M14_df,
        columnLabels = c("Type","Gross M1","PA",
                 "NA","NAcc on","AIns mid", "MPFC of"),
        aes(color=Type, alpha = 0.5), upper = list(continuous = wrap("cor", size = 2.5) ))

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCgoKIyBDcmVhdGUgZGF0YSBmcmFtZXMgZm9yIGVhY2ggbW9kZWwuCmBgYHtyfQojIERlZmluZSBhZ2dyZWdhdGUgdmFyaWFibGVzLiAKQWxsX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEdyb3NzX1VTX00xKQpBbGxfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX00xCgpDb21lZHlfR3Jvc3NfTTFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEdyb3NzX1VTX00xKQpDb21lZHlfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRUaGVhdGVyc19VU19NMQoKSG9ycm9yX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19NMSkKSG9ycm9yX1RoZWF0ZXJzX00xIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkVGhlYXRlcnNfVVNfTTEKICAKTTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfVGhlYXRlcnNfTTEpIApNMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1RoZWF0ZXJzX00xKSAKTTFfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9UaGVhdGVyc19NMSkgCgojIERlZmluZSBhZmZlY3QgdmFyaWFibGVzLgpBbGxfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFBvc19hcm91c2FsX3NjYWxlZApBbGxfTkEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5lZ19hcm91c2FsX3NjYWxlZAoKQ29tZWR5X1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkUG9zX2Fyb3VzYWxfc2NhbGVkCkNvbWVkeV9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5lZ19hcm91c2FsX3NjYWxlZAoKSG9ycm9yX1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkUG9zX2Fyb3VzYWxfc2NhbGVkCkhvcnJvcl9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5lZ19hcm91c2FsX3NjYWxlZAoKTTJfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSkgCk0yX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSkgCk0yX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIElTQyB2YXJpYWJsZXMuIApBbGxfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2NfSVNDCkFsbF9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc19JU0MKQWxsX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX0lTQwoKQ29tZWR5X05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19JU0MKQ29tZWR5X0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc19JU0MKQ29tZWR5X01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19JU0MKCkhvcnJvcl9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2NfSVNDCkhvcnJvcl9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfSVNDCkhvcnJvcl9NUEZDX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfSVNDCgojIERlZmluZSBtb2RlbHMuIApNNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk00X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY19JU0MsIEhvcnJvcl9BSW5zX0lTQywgSG9ycm9yX01QRkNfSVNDKSAKCk01X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX0lTQywgQ29tZWR5X0FJbnNfSVNDLCBDb21lZHlfTVBGQ19JU0MpIApNNV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIApgYGAKCmBgYHtyfQojIERlZmluZSB3aG9sZSB2YXJpYWJsZXMuIApBbGxfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY193aG9sZQpBbGxfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc193aG9sZQpBbGxfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ193aG9sZQoKQ29tZWR5X05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX3dob2xlCkNvbWVkeV9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc193aG9sZQpDb21lZHlfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfd2hvbGUKCkhvcnJvcl9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY193aG9sZQpIb3Jyb3JfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfd2hvbGUKSG9ycm9yX01QRkNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX3dob2xlCgojIERlZmluZSBtb2RlbHMuIApNNl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNNl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfd2hvbGUsIENvbWVkeV9BSW5zX3dob2xlLCBDb21lZHlfTVBGQ193aG9sZSkgCk02X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY193aG9sZSwgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKCk03X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNN19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTdfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY193aG9sZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX3dob2xlLCBIb3Jyb3JfTVBGQ193aG9sZSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIG9uc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29uc2V0CkFsbF9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29uc2V0CkFsbF9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX29uc2V0CgpDb21lZHlfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb25zZXQKQ29tZWR5X0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29uc2V0CkNvbWVkeV9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19vbnNldAoKSG9ycm9yX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29uc2V0CkhvcnJvcl9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vbnNldApIb3Jyb3JfTVBGQ19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfb25zZXQKCiMgRGVmaW5lIG1vZGVscy4gCk04X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk04X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19vbnNldCwgQ29tZWR5X0FJbnNfb25zZXQsIENvbWVkeV9NUEZDX29uc2V0KSAKTThfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29uc2V0LCBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIAoKTTlfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk05X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb25zZXQsIEhvcnJvcl9NUEZDX29uc2V0KSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgbWlkZGxlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19taWRkbGUKQWxsX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX21pZGRsZQpBbGxfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfbWlkZGxlCgpDb21lZHlfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX21pZGRsZQpDb21lZHlfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX21pZGRsZQpDb21lZHlfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX21pZGRsZQoKSG9ycm9yX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19taWRkbGUKSG9ycm9yX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19taWRkbGUKSG9ycm9yX01QRkNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19taWRkbGUKCiMgRGVmaW5lIG1vZGVscy4gCk0xMF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTBfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX21pZGRsZSwgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19taWRkbGUpIApNMTBfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX21pZGRsZSwgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIAoKTTExX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTFfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfbWlkZGxlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb2Zmc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19vZmZzZXQKQWxsX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29mZnNldApBbGxfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb2Zmc2V0CgpDb21lZHlfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX29mZnNldApDb21lZHlfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29mZnNldApDb21lZHlfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29mZnNldAoKSG9ycm9yX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19vZmZzZXQKSG9ycm9yX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vZmZzZXQKSG9ycm9yX01QRkNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vZmZzZXQKCiMgRGVmaW5lIG1vZGVscy4gCk0xMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29mZnNldCwgQ29tZWR5X0FJbnNfb2Zmc2V0LCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29mZnNldCwgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIAoKTTEzX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTNfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xM19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX29mZnNldCwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgpgYGB7cn0KCk0xNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19NMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19vZmZzZXQpIApNMTRfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTE0X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX29mZnNldCkgCmBgYAoKIyBOb3RlczogCiAtIEhhdmUgbm90ZSByZW1vdmVkIG91dGxpZXJzIGZyb20gZGF0YS4KCiMgTmV1cm9mb3JlY2FzdGluZzogRmlyc3QgTW9udGggVVMuCiMjIE0xOiBBZ2dyZWdzdGUgZGF0YSAKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgKwogICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCgojIyBNMjogQWZmZWN0aXZlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTIgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSAKICAgICAgICAgIysgc2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKYGBgCgojIE00OiBJU0MgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNNCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTQpCnIuc3F1YXJlZEdMTU0oTTQpCkFJQyhNNCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE00X2RmKQpnZ3BhaXJzKE00X0NfZGYpCmdncGFpcnMoTTRfSF9kZikKYGBgCgojIE01OiBJU0MgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck01IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkgCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfSVNDKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNSkKci5zcXVhcmVkR0xNTShNNSkKQUlDKE01KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTVfZGYpCmdncGFpcnMoTTVfQ19kZikKZ2dwYWlycyhNNV9IX2RmKQpgYGAKCiMgTTY6IE5ldXJhbCB3aG9sZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck02IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX3dob2xlKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNykKci5zcXVhcmVkR0xNTShNNykKQUlDKE03KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTdfZGYpCmdncGFpcnMoTTdfQ19kZikKZ2dwYWlycyhNN19IX2RmKQpgYGAKCiMgTTg6IE5ldXJhbCBvbnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck04IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNOCkKci5zcXVhcmVkR0xNTShNOCkKQUlDKE04KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTThfZGYpCmdncGFpcnMoTThfQ19kZikKZ2dwYWlycyhNOF9IX2RmKQpgYGAKCiMgTTk6IE5ldXJhbCBvbnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTkgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEwKQpyLnNxdWFyZWRHTE1NKE0xMCkKQUlDKE0xMCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMF9kZikKZ2dwYWlycyhNMTBfQ19kZikKZ2dwYWlycyhNMTBfSF9kZikKYGBgCgojIE0xMTogTmV1cmFsIG1pZGRsZSBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTExIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEyKQpyLnNxdWFyZWRHTE1NKE0xMikKQUlDKE0xMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMl9kZikKZ2dwYWlycyhNMTJfQ19kZikKZ2dwYWlycyhNMTJfSF9kZikKYGBgCgojIE0xMzogTmV1cmFsIG9mZnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEzIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgTW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKHJhbmsoR3Jvc3NfVG90YWxfVVNfYnl0aGVhdGVyKSB+IFR5cGUgCiAgICAgICAgICAgICAjKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICAjKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5hY2NfcGVhaykgCiAgICAgICAgICAgICAjICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgIyArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5hY2NfcGVhaykgCiAgICAgICAgICAgICAjICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICAjICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3NzX1RvdGFsX1VTX2J5dGhlYXRlciA9IEdyb3NzX1RvdGFsX1VTL1RvdGFsX1RoZWF0ZXJzX1VTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jvc3NfVVNfTTFfYnl0aGVhdGVyID0gR3Jvc3NfVVNfTTEvVGhlYXRlcnNfVVNfVzRfbnVtKSAlPiUKICAgICAgICAgICAgZ3JvdXBfYnkoVHJhaWxlcikgJT4lCiAgICAgICAgICAgIG11dGF0ZShOYWNjX3BlYWsgPSBtYXgoY19hY3Jvc3MoYyhOQWNjX29uc2V0LCBOQWNjX21pZGRsZSwgTkFjY19vZmZzZXQpKSwgbmEucm0gPSBUUlVFKSkpCnN1bW1hcnkoTTE0KQpyLnNxdWFyZWRHTE1NKE0xNCkKQUlDKE0xNCkKYGBgCgojIE0xNTogU2VxdWVuY2UgTW9kZWwgMgpgYGB7ciwgZWNobyA9IEZBTFNFfQogIyBFZmZlY3RzIGJlY29tZSBtb3JlIHNpZ25pZmljYW50IGlmIHdlIHJlbW92ZSAnVGhlYXRlcl9udW0nIHByZWRpY3Rvci4uLiB3ZSBjYW4gZG8gdGhhdCB3aXRoIHRoZSAKIyAnR3Jvc3NPdmVyVGhlYXRlcnMnIHZhcmlhYmxlLCBob3dldmVyIE1QRkMgbG9va3MgYSBiaXQgZnVubnkuICAKTTE1IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpICMgU2hvdWxkIHdlIGhhdmUgYSB0aGVhdGVycyBpbnRlcmFjdGlvbj8gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTE1KQpyLnNxdWFyZWRHTE1NKE0xNSkKQUlDKE0xNSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIAojZ2dwYWlycyhNMTRfZGYpCiNnZ3BhaXJzKE0xNF9DX2RmKQojZ2dwYWlycyhNMTRfSF9kZikKdmlmKE0xNSkKYGBgCgoKYGBge3J9ClR5cGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFR5cGUKTTE0X2RmIDwtIGRhdGEuZnJhbWUoVHlwZSwgQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29uc2V0LCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX29mZnNldCkgCmdncGFpcnMoTTE0X2RmLAogICAgICAgIGNvbHVtbkxhYmVscyA9IGMoIlR5cGUiLCJHcm9zcyBNMSIsIlBBIiwKICAgICAgICAgICAgICAgICAiTkEiLCJOQWNjIG9uIiwiQUlucyBtaWQiLCAiTVBGQyBvZiIpLAogICAgICAgIGFlcyhjb2xvcj1UeXBlLCBhbHBoYSA9IDAuNSksIHVwcGVyID0gbGlzdChjb250aW51b3VzID0gd3JhcCgiY29yIiwgc2l6ZSA9IDIuNSkgKSkKCmBgYAoK